package com.netsar.contole;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import com.netsar.facade.ReservasFacade;
import com.netsar.facade.ReservasFacadeImpl;
import com.netsar.modelo.Reservas;

/**
 *
 * @author Cristiano
 */
@ManagedBean(name="reservasMB")
@SessionScoped  
public class ReservasMB  {

	private Reservas reservas = new Reservas();
	private List<Reservas> listaReservas = new ArrayList<Reservas>();

	public ReservasMB() {
	}

	public Reservas getReservas() {
		return reservas;
	}

	public void setReservas(Reservas reservas) {
		this.reservas = reservas;
	}

	public List<Reservas> getListaReservas() {
		return listaReservas;
	}

	public void setListaReservas(List<Reservas> listaReservas) {
		this.listaReservas = listaReservas;
	}

	public void pesquisarReservas(){
		ReservasFacade facade = ReservasFacadeImpl.getServiceFacade();
		//		setListaReservas(facade.pesquisaReservas(reservas.getCheckInDate(), reservas.getCheckOutDate(), reservas.getCidade().getCodigo()));
		List<Reservas> lista = new ArrayList<Reservas>();
		Reservas h = new Reservas();
		h.setNomeHotel("Hotel A");
		h.setCodigoHotel(1);
		h.setCodigoCidade(1);
		lista.add(h);
		h = new Reservas();
		h.setNomeHotel("Hotel B");
		h.setCodigoHotel(2);
		h.setCodigoCidade(2);
		lista.add(h);
		h = new Reservas();
		h.setNomeHotel("Hotel C");
		h.setCodigoHotel(3);
		h.setCodigoCidade(3);
		lista.add(h);
		setListaReservas(lista);
		atualizaListaReservasTela();
	}

	private void atualizaListaReservasTela() {
		ReservasFacade facade = ReservasFacadeImpl.getServiceFacade();
		List<Reservas> listaReservasBanco = facade.recuperaReservaHoteis();
		for(Reservas rAramzenada: listaReservasBanco){
			for(Reservas rTela: getListaReservas()){
				if(rAramzenada.getCodigoHotel() == rTela.getCodigoHotel())
					rTela.setCheckReservar(true);
				else 
					rTela.setCheckReservar(false);

			}
		}
	}

	//efetura reserva no reservas
	public void efetuarReservas(){
		ReservasFacade facade = ReservasFacadeImpl.getServiceFacade();
		for(Reservas r: getListaReservas()){
			if(r.getCheckReservar())
				facade.salva(r);
		}
	}



	public void cancelarReservas(){
		ReservasFacade facade = ReservasFacadeImpl.getServiceFacade();
		List<Reservas> listaReservasBanco = facade.recuperaReservaHoteis();
		for(Reservas rAramzenada: listaReservasBanco){
			for(Reservas rTela: getListaReservas()){
				if(rTela.getCheckReservar() && rAramzenada.getCodigoHotel() == rTela.getCodigoHotel()){
					facade.remove(rAramzenada);
				}
			}
		}
		atualizaListaReservasTela();
	}



}
